package com.boss.salary.dao;

import com.boss.framework.dto.PaginationDTO;
import com.boss.salary.entity.SalaryBasedata;
import com.boss.salary.vo.AgencySalaryVO;

import java.util.List;
import java.util.Map;

public interface ISalaryBasedataDao {
    /**
     * 分页查询 工资项基础数据
     * @param paginationDTO
     * @return
     */
    List<SalaryBasedata> querySalaryBasedataPage(PaginationDTO paginationDTO,String province);

    /**
     * 获取 工资项基础数据数量
     * @return
     */
    int querySalaryBasedataTotal(String province);

    /**
     * 增加 工资项基础数据
     * @param salaryBasedata
     * @return
     */
    void saveSalaryBasedata(SalaryBasedata salaryBasedata);

    /**
     * 更新 工资项基础数据
     * @param salaryBasedata
     * @return
     */
    void updateSalaryBasedata(SalaryBasedata salaryBasedata);

    /**
     * 根据id删除 工资项基础数据
     * @param ids
     * @return
     */
    void deleteSalaryBasedata(String ids);

    /**
     * 根据条件获取工资项信息
     * @param queryParam
     * @return
     */
    List<SalaryBasedata> querySalaryBaseDataInfo(Map<String, Object> queryParam);
    /**
     * 根据条件获取挂接指标用工资项信息
     * @param queryParam
     * @return
     */
    List<SalaryBasedata> queryBgtSalaryBaseDataInfo(Map<String, Object> queryParam);
    /**
     * 查询标准项
     * @param queryParam
     * @return
     */
    List<SalaryBasedata> queryStandardBasedataInfo(Map<String, Object> queryParam);

    /**
     * 查询所有的工资项
     * @param province
     */
    List<SalaryBasedata> selectAllSalary(String province);

    /**
     * 获取工资项S1-S100
     * @param province
     * @return
     */
    List<SalaryBasedata> selectAllSalaryCode(String province);

    /**
     * 获取当前数据库最大code
     * @return
     */
    int getMaxCode(String province);

    /**
     * 获取对象全部信息
     * @param salaryBasedata
     * @return
     */
    SalaryBasedata selectById(SalaryBasedata salaryBasedata);

    /**
     * 获取所有正项
     * @return
     */
    List<String> getAlladdColum();

    /**
     * 获取所有扣项
     * @return
     */
    List<String> getAllsubColum();

    /**
     * 根据区划获取需要清空工资项
     * @param province
     * @return
     */
    List<String> selectClearColumn(String province);

    /**
     * 根据区划获取需要计算工资项
     * @param province
     * @return
     */
    List<SalaryBasedata> selectComputeColumn(String province);

    /**
     * 根据区划获取全部工资项
     * @param province
     * @return
     */
    List<SalaryBasedata> selectAllSalaryAndColumn(String province);


    /**
     * 根据区划按顺序查询工资条项目
     * @param province
     * @return
     */
    List<AgencySalaryVO> selectSalaryItemByProvince(String province);

    /**
     * 查询区划下实发应发工资项数据默认实发s1应发s2
     * @param province
     * @return
     */
    List<SalaryBasedata> getSalaryBaseDataInfoS1S2(String province);

    /**
     * 根据区划查找所有工资类型编码
     * @returnv
     */
    List<String> getSalaryCodes(String province);

}
